/*
 * 文件名：ParkwellPayBillService.java	 
 * 时     间：上午10:42:12
 * 作     者：Administrator       
 * 版     权： 2012-2022 湖南智软网络科技, 公司保留所有权利.
 * 联     系：http://www.073586.com/
 */
package com.local.service.face;

import java.util.List;

import com.local.entity.vo.ParkwellPayBillVo;
import com.local.entity.vo.WorkUserPayBillVo;
import com.local.model.CarParkIn;
import com.local.model.LocalCarType;
import com.local.model.LocalPayBill;
import com.local.model.LocalPayBillCopy;
import com.local.model.LocalPayBillExample;
import com.local.page.ParkwellPayBillPage;
import com.qianhai.common.exception.BaseException;
import com.qianhai.common.service.face.BaseService;

/** 
 * 类描述:停车场支付流水业务接口
 * @ClassName: ParkwellPayBillService 
 * @author Administrator
 * @date 2015年4月7日 上午10:42:12 
 */
public interface ParkwellPayBillService extends BaseService<LocalPayBillExample, LocalPayBill, String>
{
	
	/**
	 * 
	 * 方法描述：第三方往  本地插入 现金流水记录
	 * @Title: addOtherPayBill 
	 * @param @param parkwellPayBill
	 * @param @return
	 * @return String
	 * @user Administrator
	 * 2016年1月5日
	 * @throws
	 */
	LocalPayBill addOtherPayBill(LocalPayBill parkwellPayBill);
	
	/**
	 * 
	 * 方法描述：虚拟表，允许自动扣费，则在信路通，生成流水
	 * @Title: addOtherPayBill 
	 * @param @param pbillBo
	 * @param @return
	 * @return String
	 * @user Administrator
	 * 2016年1月15日
	 * @throws
	 */
	LocalPayBill addOtherPayBill(ParkwellPayBillVo pbillBo);

	/**
	 * 
	 * 方法描述：添加一条停车场支付流水
	 * @Title: saveParkwellPayBill 
	 * @param @param parkwellPayBill
	 * @param @return
	 * @return String
	 * @user Administrator
	 * 2015年4月7日
	 * @throws
	 */
	String saveParkwellPayBill(LocalPayBill parkwellPayBill);
	
	/**
	 * 
	 * 方法描述：条件查询支付流水
	 * @Title: findAllParkwellPayBillByQueryForm 
	 * @param @param pageInfo
	 * @param @return
	 * @return List<ParkwellPayBill>
	 * @user Administrator
	 * 2015年4月7日
	 * @throws
	 */
	List<LocalPayBill>  findAllParkwellPayBillByQueryForm(ParkwellPayBillPage<LocalPayBill> pageInfo);

	/**
	 * 
	 * 方法描述：计费开闸 ,已废弃。无调用
	 * @deprecated
	 * @Title: saveParkwellPayBill 
	 * @param @param localPayBill
	 * @param @param carOutUuid
	 * @param @param stationUuid
	 * @return void
	 * @user Administrator
	 * 2015年7月16日
	 * @throws
	 */
	void saveParkwellPayBill(LocalPayBill localPayBill, String carOutUuid, String stationUuid,String crossinId,ParkwellPayBillVo parkwellPayBillVo);
	
	CarParkIn selectCarNo(String carNo);
	
	public Double queryPayBillByCondition(LocalPayBill localPayBill);
	
	/**
	 * @deprecated
	 * 方法描述： 抽离controller代码保持事物一致性
	 * @Title: savePayBill 
	 * @param @param parkwellPayBillVo
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user Administrator
	 * 2015年10月9日
	 * @throws
	 */
	public Integer savePayBill(ParkwellPayBillVo parkwellPayBillVo) throws BaseException;
	
	/**
	 * 
	 * 方法描述： 车辆进场流水
	 * @Title: addCarInBill 
	 * @param @param parkwellPayBillVo
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user Administrator
	 * 2015年10月9日
	 * @throws
	 */
	public Integer addCarInBill(ParkwellPayBillVo parkwellPayBillVo) throws BaseException;
	
	public LocalCarType queryCarType(LocalCarType carType);
	
	/**
	 * 
	 * 方法描述：  获取当前车牌，进场流水。并且保证该车牌未出。
	 * @Title: queryPayBillByCarNo 
	 * @param @param carNo
	 * @param @return
	 * @return List<LocalPayBill>
	 * @user Administrator
	 * 2015年10月17日
	 * @throws
	 */
	public List<LocalPayBill> queryPayBillByCarNo(String carNo);
	
	
	/**
	 * 
	 * 方法描述：移动支付
	 * @Title: queryHomeMobile 
	 * @param @return
	 * @return List<LocalPayBill>
	 * @user lyf
	 * 2015年11月3日
	 * @throws
	 */
	public List<LocalPayBill> queryHomeMobile();
	
	/**
	 * 
	 * 方法描述：现金支付
	 * @Title: queryMoney 
	 * @param @return
	 * @return List<LocalPayBill>
	 * @user lyf
	 * 2015年11月3日
	 * @throws
	 */
	public List<LocalPayBill> queryMoney(String userid);
	
	/**
	 * 
	 * 方法描述： 自动扣费
	 * @Title: queryAuto 
	 * @param @return
	 * @return List<LocalPayBill>
	 * @user lyf
	 * 2015年11月3日
	 * @throws
	 */
	public List<LocalPayBill> queryAuto();
	
	/**
	 * 
	 * 方法描述： 会员
	 * @Title: queryMember 
	 * @param @return
	 * @return List<LocalPayBill>
	 * @user lyf
	 * 2015年11月3日
	 * @throws
	 */
	public List<LocalPayBill> queryMember();
	
	/**
	 * 
	 * 方法描述：查询最后一条流水记录
	 * @Title: queryLastBill 
	 * @param @param carInUuid
	 * @param @return
	 * @return LocalPayBill
	 * @user Administrator
	 * 2015年11月18日
	 * @throws
	 */
	public LocalPayBill queryLastBill(String carInUuid);
	
	/**
	 * 
	 * 方法描述：增加流水副本
	 * @Title: savePayBillCopy 
	 * @param @param localPayBillCopy
	 * @return void
	 * @user Administrator
	 * 2016年4月5日
	 * @throws
	 */
	public void savePayBillCopy(LocalPayBillCopy localPayBillCopy);
	
	/**
	 * 
	 * 方法描述：查询实际支付价格，仅返回一个字段
	 * @Title: queryByCarInUuid 
	 * @param @param carInUuid
	 * @param @return
	 * @return List<LocalPayBillCopy>
	 * @user Administrator
	 * 2016年4月5日
	 * @throws
	 */
	public List<LocalPayBillCopy> queryByCarInUuid(String carInUuid);
	
	public LocalPayBillCopy queryLastBillCopy(String carInUuid);
	
	public List<LocalPayBillCopy> queryListByCarInUuid(String carInUuid);
	
	/**
	 * 
	 * 方法描述：中央收费，生成流水副本表
	 * @Title: saveCentralPayBill 
	 * @param @param parkwellPayBillVo
	 * @return void
	 * @user Administrator
	 * 2016年4月20日
	 * @throws
	 */
	public void saveCentralPayBill(ParkwellPayBillVo parkwellPayBillVo);
	//根据人员统计支付总钱
	public List<WorkUserPayBillVo> countUserBill(String stationUuid,String rotaStartTime,String rotaEndTime);
	//根据人员与类型统计支付钱
	public List<WorkUserPayBillVo> countUserAndTypeBill(String stationUuid,String rotaStartTime,String rotaEndTime);
	
	//通过车牌号，统计滚动计费，当天缴纳的费用
	public Double countCarNoRepeatMoney(String carNo);
	
	//非今天费用
	public Double countCarNoNext(String carNo);
	
	/**
	 * 
	 * 方法描述： 删除非当天滚动流水信息，通过车牌删除.
	 * @Title: delRepaetBillNotInDay 
	 * @param @param billVo
	 * @param @return
	 * @param @throws BaseException
	 * @return Integer
	 * @user liyf
	 * 2016年6月9日
	 * @throws
	 */
	public Integer delRepaetBillNotInDay(ParkwellPayBillVo billVo) throws BaseException;

	/**
	 * 
	 * @param payBillUuid
	 */
	void removePayBillByUuid(String payBillUuid);
}
